var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var flash = require('connect-flash');
var session = require('express-session');
var MongoStore = require('connect-mongo')(session);
var fs = require('fs');

var routes = require('./routes/index');
var settings = require('./settings');
var accessLog = fs.createWriteStream('log/access.log',{flags:'a'});
var errorLog = fs.createWriteStream('log/error.log',{flags:'a'});
var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(logger({stream:accessLog}));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(flash());
app.use(session({
  secret:settings.cookieSecret,
  key:settings.db,//cookie name
  cookie:{maxAge:1000*60*60*24*30},
  store:new MongoStore({
/*    db:settings.db,
    host:settings.host,
    port:settings.port*/
    url: 'mongodb://localhost/blog'
  })
}));


app.use(function(err,req,res,next){
	var meta = '['+new Date()+']'+req.url+'\n';
	errorLog.write(meta+err.stack+'\n');
	next();
});
routes(app);
module.exports = app;
